# CSRF & XSS


# CSRF

Cross Site Request Forgery

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ทจ์•ฝ์  ์ค‘ ํ•˜๋‚˜๋กœ, ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์˜์ง€์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ํ–‰์œ„ (modify, delete, register ๋“ฑ)๋ฅผ ํŠน์ •ํ•œ ์›น์‚ฌ์ดํŠธ์— requestํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ์„ ๋งํ•œ๋‹ค.

์ฃผ๋กœ ํ•ด์ปค๋“ค์ด ๋งŽ์ด ์ด์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์œ ์ €์˜ ๊ถŒํ•œ์„ ๋„์šฉํ•ด ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‹ค์ƒํ™œ์—์„œ CSRF ๊ณต๊ฒฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฑด, ํ•ด์ปค๊ฐ€ ์‚ฌ์šฉ์ž์˜ SNS ๊ณ„์ •์œผ๋กœ ๊ด‘๊ณ ์„ฑ ๊ธ€์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

์ •ํ™•ํžˆ ๋งํ•˜๋ฉด, CSRF๋Š” ํ•ด์ปค๊ฐ€ ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ์—ผ์‹œ๊ฑฐ๋‚˜ ์„œ๋ฒ„๋ฅผ ํ•ดํ‚นํ•ด์„œ ๊ณต๊ฒฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. CSRF ๊ณต๊ฒฉ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์ด ๋งŒ์กฑํ•  ๋•Œ ์‹คํ–‰๋œ๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด์ปค๊ฐ€ ๋งŒ๋“  ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ ๊ฒฝ์šฐ
  • ์œ„์กฐ ์š”์ฒญ์„ ์ „์†กํ•˜๋Š” ์„œ๋น„์Šค์— ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•œ ์ƒํ™ฉ

๋ณดํ†ต ์ž๋™ ๋กœ๊ทธ์ธ์„ ํ•ด๋‘” ๊ฒฝ์šฐ์— ์ด๋Ÿฐ ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ํ”ผํ•ด๋ฅผ ์ž…๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋˜ํ•œ, ํ•ด์ปค๊ฐ€ XSS ๊ณต๊ฒฉ์„ ์„ฑ๊ณต์‹œํ‚จ ์‚ฌ์ดํŠธ๋ผ๋ฉด, ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ CSRF ๊ณต๊ฒฉ์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.


# ๋Œ€์‘ ๊ธฐ๋ฒ•

  • # ๋ฆฌํผ๋Ÿฌ(Refferer) ๊ฒ€์ฆ

    ๋ฐฑ์—”๋“œ ๋‹จ์—์„œ Refferer ๊ฒ€์ฆ์„ ํ†ตํ•ด ์Šน์ธ๋œ ๋„๋ฉ”์ธ์œผ๋กœ ์š”์ฒญ์‹œ์—๋งŒ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค.

  • # Security Token ์‚ฌ์šฉ

    ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์— ์ž„์˜์˜ ๋‚œ์ˆ˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์‹œ ํ•ด๋‹น ๊ฐ’์„ ํฌํ•จํ•˜์—ฌ ์ „์†ก์‹œํ‚จ๋‹ค. ๋ฐฑ์—”๋“œ ๋‹จ์—์„œ๋Š” ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ ์„ธ์…˜์— ์ €์žฅ๋œ ํ† ํฐ๊ฐ’๊ณผ ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋ฐ›๋Š” ํ† ํฐ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ์ง€ ๊ฒ€์ฆ ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

ํ•˜์ง€๋งŒ, XSS์— ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค๋ฉด ๊ณต๊ฒฉ์„ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค.


# XSS

Cross Site Scription

CSRF์™€ ๊ฐ™์ด ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ทจ์•ฝ์  ์ค‘ ํ•˜๋‚˜๋กœ, ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹Œ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์„ ๋งํ•œ๋‹ค.

์•…์˜์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์ด๋ฅผ ์—ด๋žŒํ•œ ์‚ฌ์šฉ์ž์˜ ์ฟ ํ‚ค๊ฐ€ ํ•ด์ปค์—๊ฒŒ ์ „์†ก์‹œํ‚ค๋ฉฐ, ์ด ํƒˆ์ทจํ•œ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์„ธ์…˜ ํ•˜์ด์žฌํ‚น ๊ณต๊ฒฉ์„ ํ•œ๋‹ค. ํ•ด์ปค๋Š” ์„ธ์…˜ID๋ฅผ ๊ฐ€์ง„ ์ฟ ํ‚ค๋กœ ์‚ฌ์šฉ์ž์˜ ๊ณ„์ •์— ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•ด์ง€๋Š” ๊ฒƒ์ด๋‹ค.

๊ณต๊ฒฉ ์ข…๋ฅ˜๋กœ๋Š” ์ง€์†์„ฑ, ๋ฐ˜์‚ฌํ˜•, DOM ๊ธฐ๋ฐ˜ XSS ๋“ฑ์ด ์žˆ๋‹ค.

  • ์ง€์†์„ฑ : ๋ง ๊ทธ๋Œ€๋กœ ์ง€์†์ ์œผ๋กœ ํ”ผํ•ด๋ฅผ ์ž…ํžˆ๋Š” ์œ ํ˜•์œผ๋กœ, XSS ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์—ด๋žŒํ•œ ์‚ฌ์šฉ์ž์˜ ์ฟ ํ‚ค๋ฅผ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์‹œํ‚ค๋Š” ๊ณต๊ฒฉ์„ ํ•œ๋‹ค. ์ด๋•Œ ์‚ฝ์ž…๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ์‹œ์ผœ ์ง€์†์ ์œผ๋กœ ๊ณต๊ฒฉ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Persistent XSS๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.
  • ๋ฐ˜์‚ฌํ˜• : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์„ ์„œ๋ฒ„์—์„œ ๋˜๋Œ๋ ค ์ฃผ๋Š” ๊ณณ์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ์•…์˜ ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ URL์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ˆ„๋ฅด๋„๋ก ์œ ๋„ํ•˜๊ณ , ๋ˆ„๋ฅธ ์‚ฌ์šฉ์ž๋Š” ์ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์–ด ๊ณต๊ฒฉ์„ ๋‹นํ•˜๊ฒŒ ๋˜๋Š” ์œ ํ˜•์ด๋‹ค.
  • DOM ๊ธฐ๋ฐ˜ : ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋œ URL์„ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ•ด์„ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ณต๊ฒฉ์ด๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ ์ธก ์ฝ”๋“œ๊ฐ€ ์›๋ž˜ ์˜๋„์™€ ๋‹ค๋ฅด๊ฒŒ ์‹คํ–‰๋œ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ XSS ๊ณต๊ฒฉ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์„œ๋ฒ„ ์ธก์—์„œ ํƒ์ง€๊ฐ€ ์–ด๋ ต๋‹ค.

# ๋Œ€์‘ ๊ธฐ๋ฒ•

  • # ์ž…์ถœ๋ ฅ ๊ฐ’ ๊ฒ€์ฆ

    XSS Cheat Sheet์— ๋Œ€ํ•œ ํ•„ํ„ฐ ๋ชฉ๋ก์„ ๋งŒ๋“ค์–ด ๋ชจ๋“  Cheat Sheet์— ๋Œ€ํ•œ ๋Œ€์‘์„ ๊ฐ€๋Šฅํ•˜๋„๋ก ์‚ฌ์ „์— ๋Œ€๋น„ํ•œ๋‹ค. XSS ํ•„ํ„ฐ๋ง์„ ์ ์šฉ ํ›„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€ ์ง์ ‘ ํ…Œ์ŠคํŠธ ๊ณผ์ •์„ ๊ฑฐ์ณ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค,

  • # XSS ๋ฐฉ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ™•์žฅ์•ฑ

    Anti XSS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ํšŒ์‚ฌ๋“ค์ด ๋งŽ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์„œ๋ฒ„๋‹จ์—์„œ ์ถ”๊ฐ€ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๋“ค์€ ๊ฐ์ž ๋ธŒ๋ผ์šฐ์ €์—์„œ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ™•์žฅ์•ฑ์„ ์„ค์น˜ํ•˜์—ฌ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

  • # ์›น ๋ฐฉํ™”๋ฒฝ

    ์›น ๋ฐฉํ™”๋ฒฝ์€ ์›น ๊ณต๊ฒฉ์— ํŠนํ™”๋œ ๊ฒƒ์œผ๋กœ, ๋‹ค์–‘ํ•œ Injection์„ ํ•œ๊บผ๋ฒˆ์— ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

  • # CORS, SOP ์„ค์ •

    CORS(Cross-Origin Resource Sharing), SOP(Same-Origin-Policy)๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค์˜ Source๋ฅผ ์ œํ•œ ํ•˜๋Š”๊ฒƒ์ด ํšจ๊ณผ์ ์ธ ๋ฐฉ์–ด ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์›น ์„œ๋น„์Šค์ƒ ์ทจ์•ฝํ•œ ๋ฒกํ„ฐ์— ๊ณต๊ฒฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž… ํ•  ๊ฒฝ์šฐ, ์น˜๋ช…์ ์ธ ๊ณต๊ฒฉ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ž…๋ ฅ๊ฐ’ ์ œํ•œ์ด๋‚˜ ๊ธฐํƒ€ ์š”์ธ ๋•Œ๋ฌธ์— ๊ณต๊ฒฉ ์„ฑ๊ณต์ด ์–ด๋ ต๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ณต๊ฒฉ์ž์˜ ์„œ๋ฒ„์— ์œ„์น˜ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ถˆ๋Ÿฌ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์‰ฌ์›Œ์ง„๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋–„๋ฌธ์— CORS, SOP๋ฅผ ํ™œ์šฉ ํ•˜์—ฌ ์‚ฌ์ „์— ์ง€์ •๋œ ๋„๋ฉ”์ธ์ด๋‚˜ ๋ฒ”์œ„๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๊ฒŒ ์ œํ•œํ•ด์•ผ ํ•œ๋‹ค.



# [์ฐธ๊ณ  ์‚ฌํ•ญ]

์ตœ์ข… ์ˆ˜์ • : 12/17/2022, 7:23:59 AM